<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>MITE区块修改器</title>
	</head>
	<body>
		<br/>
		MITE区块修改器
		<br/>
		<br/>
		<br/>
		<font color="blue">
		本程序仅供直观学习研究MITE矿物、基岩、地幔分布情况，<br/>
		请勿用作其他用途！<br/>
		<br/>
		<br/>
		使用方法：<br/>
		备份存档<br/>
		将要修改的区块文件和程序放在同一文件夹<br/>			
		开启程序，点击一键替换<br/>
		程序会将区块文件中的石头替换为玻璃<br/>
		将修改后的文件覆盖原文件即可<br/>
		<br/>
		<br/>
		<br/>
		后续版本将支持自定义源方块和目标方块</font><br/>
		<br/>
		下载地址：咕咕咕<br/>
		（进度80%）<br/>
		<br/>
		授人以鱼不如授人以渔<br/>
		授人以渔不如授人以渔池<br/>
		<br/>
		<br/>
		坐标对应X*Y*Z<br/>
		一些定义：<br/>
		区格：地图文件组成的最小保存单元。16*16*16<br/>
		区块：Y轴方向16个区格组成一个区块。16*256*16<br/>
		区域：由1024个区块组成，XZ各32个。512*256*512<br/>
		文件头：记录区块数据偏移量的指针和时间戳<br/>
		数据块：4096个字节组成的一段二进制数据<br/>
		区块数据：由一个或多个数据块组成的二进制数据<br/>
		<br/>
		mcb文件格式：<br/>
		文件头+区块数据*1024<br/>
		<br/>
		文件头：总共4096*2个字节<br/>
		第一个4096字节，由4字节*1024组成，<br/>
		第二个4096字节是时间戳，复制即可。<br/>
		<br/>
		第一个4096字节结构如下（十六进制）<br/>
		AA BB CC DD AA BB CC DD ......<br/>
		一共1024个结构体，对应1024个区块，<br/>
		AABBCC记录的是区块数据在mcb文件中从头开始的偏移字节数，<br/>
		处理的时候，要将其做如下处理<br/>
		偏移数=Cdec("&H"+AA+BB+CC+"00") * 16<br/>
		<br/>
		DD记录的是这个区块占用的数据块个数<br/>
		00：此区块未加载，此时AABBCC都是00<br/>
		01：占用一个<br/>
		02：占用两个<br/>
		03：占用三个<br/>
		04：占用四个<br/>
		05：占用五个<br/>
		目前暂未发现占用六个的，但不表示不会出现<br/>
		<br/>
		下面解析区块数据<br/>
		①占用一个数据块<br/>
		结构如下<br/>
		EE FF GG HH II P1 P2 P3 ...... PZ<br/>
		其中EEFFGGHH记录的P1到PZ的字节个数+1，<br/>
		II值恒定为“02”，<br/>
		如果从EE到PZ的总字节数不足4096，<br/>
		那么后面的字节将被“00”填充直到满4096个<br/>
		②占用多个数据块<br/>
		第一个数据块同上（不会出现“00”填充）<br/>
		第二个数据块将紧接第一个数据块记录数据，<br/>
		未能满足4096的部分则将被“00”填充。<br/>
		1 - 5                                      //开头字节<br/>
		6 - 4096  →  0 to 4090           //占用一个<br/>
		6 - 4096+4096 →  0 to 8186  //占用两个<br/>
		<br/>
		依次类推。<br/>
		<br/>
		下面开始处理，有两种方法，<br/>
		①计算字节个数N，然后从P1处开始读取(N-1)个字节。<br/>
		②完全读取整个数据块，去掉开头的5个字节，<br/>
		   循环Remove掉末尾的“00”字节。<br/>
		<br/>
		处理完毕后得到一个字节流streamA<br/>
		将此字节流使用Zlib (RFC1950)解压缩<br/>
		java中使用InflaterInputStream<br/>
		Python中使用zlib库压缩率=6<br/>
		.NET就放弃吧<br/>
		解压缩后得到原始字节流streamB<br/>
		<br/>
		下面开始解析streamB<br/>
		我们需要修改其中的方块ID。<br/>
		一段stream中包含这个区块的16个区格数据。<br/>
		从头开始搜索字节直到找到blockdata标签，<br/>
		开始标志“00 00 10 00”<br/>
		4096个字节的方块ID<br/>
		结束标志“00 7D 00”<br/>
		特殊的，最后一个区格结束标志为“00 7C 00”<br/>
		方块ID可在本站查询，数值上限为FF即255。<br/>
		查询替换即可。<br/>
		<br/>
		---------------------------------------------<br/>
		合成新mcb过程<br/>
		↓<br/>
		逆向zlib压缩得到StreamC<br/>
		↓<br/>
		复制mcb到out文件夹，RW+打开<br/>
		↓<br/>
		读取文件头指针和时间戳<br/>
		↓<br/>
		解析streamC，得到长度，写数据块头，<br/>
		写数据块，填入空字节“00”<br/>
		↓<br/>
		保存流到文件<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>
		<br/>

	</body>
	<br/><br/>
		<br/>
		<br/><br/><br/>
		<br/><br/><br/>
		<br/><br/>
<script async src="https://events.vercount.one/js"></script>
雪花量<span id="vercount_value_page_pv">❄️</span>片
		<br/>
		<footer>©2025   本 <a href="https://mitega.pages.dev" target="_blank">网站</a> 由 <a href="https://yuezhuxue.pages.dev" target="_blank">月煮雪</a> 强力驱动  </footer>
</html>
